// implement String.trim
String.prototype.trim = function(){
	return this.replace(/^[\s\r\n\t]+|[\s\r\n\t]+$/g, "");
}

$(function(){
	// datepicker
	$.datepicker.setDefaults({
		dateFormat: 'yy-mm-dd',
		yearRange: "c-100:c+10",
		changeYear: true,
		changeMonth: true,
		monthNames: ['Јануар','Фебруар','Март','Април','Мај','Јун','Јул','Август','Септембар','Октобар','Новембар','Децембар'],
		monthNamesShort: ['Јан','Феб','Мар','Апр','Мај','Јун','Јул','Авг','Сеп','Окт','Нов','Дец'],
		dayNames: ['Недеља','Понедељак','Уторак','Среда','Четвртак','Петак','Субота'],
		dayNamesShort: ['Нед','Пон','Уто','Сре','Чет','Пет','Суб'],
		dayNamesMin: ['Не','По','Ут','Ср','Че','Пе','Су'],
		firstDay: 1
	});
	$('.datepicker').datepicker();
	
	// multi-inputs
	$('.multi-inputs').each(function(){
		$(this).children('.multi-input').each(function(index){
			var add = $('<a href="javascript:void(0)" class="add">+</a>')
				.click(function(){
					var p = $(this).parent();
					var c = p.clone(true);
					c.find('input[type=text]').val('');
					p.after(c);
					
					// fix datepicker
					if(c.find(".datepicker")) {
						c.find(".datepicker").datepicker("destroy");
						
						c.find(".datepicker").each(function(){
							id = getUUID();
							$(this).attr("id", id).datepicker();
						});
					}
					
					// trigger onAdd
					try {
						var func = eval(p.parent().attr('id') + '_onAdd');
						func(c);
					}catch(e) {
						// function not found
					}
				})
				.appendTo(this);
			
			var r = $('<a href="javascript:void(0)" class="remove">-</a>')
				.click(function(){
					$(this).parent().remove();
					
					// trigger onRemove
					try {
						var func = eval($(this).parent().parent().attr('id') + '_onRemove');
						func($(this).parent().parent());
					}catch(e) {
						// function not found
					}
				})
				.appendTo($(this));
		});
	});
	
	// autocomplete
	$('.autocomplete input[type=text]').each(function(){
		$(this).autocomplete({
			source: $(this).attr('ac:url'),
			minLength: 3,
			select: function(e, ui) {
				$(this).siblings('input[type=hidden]').val(ui.item.id);
			},
			search: function(e, ui) {
				$(this).siblings('input[type=hidden]').val('');
			},
			response: function(e, ui) {
				$(this).val('');
			}
		});
	});
	
	// beautifull File Inputs
	$('input[type=file]').each(function(){
		initFileInput(this);
	});
	
	// popup-linkovi
	$('a.popup').click(function(){
		var win = window.open(this.href, 'popup', 'width=800,height=600,scrollbars=yes');
		win.focus();
		
		return false;
	});
});

function getUUID() {
	var buffer = "1234567890qwertyuiopasdfghjklzxcvbnm_";
	var ret = "";
	for(var i=0;i<10; i++) {
		ret += buffer.substr(Math.round(Math.random()*(buffer.length-1)), 1);
	}
	return ret;
}

function initFileInput(input) {
	input = $(input);
	input.change(function(){
		$(this).parent().addClass('selected');
	});
	
	var container = $('<span class="file-input-container">');
	input.before(container);
	container.append(input);
	
	var display = $('<span class="display">').appendTo(container);
	
	var cancel   = $('<span class="cancel" title="poništi">x</span>').prependTo(container);
	cancel.click(function(){
		$(this).parent().removeClass('selected');
		$(this).parent().find('input[type=file]').val('');
	});
	var selected = $('<span class="selected">spremno.</span>').prependTo(container);
	
	var trigger = $('<input type="button" class="trigger" value="Promeni...">').appendTo(container);
	trigger.click(function(){
		$(this).parent().find('input[type=file]').click();
	});
}